package locations.actions;

import locations.dao.implement.EspecialidadDAOHibernateJPA;
import locations.dao.implement.ProfesionalDAOHibernateJPA;
import locations.dao.implement.ServicioDAOHibernateJPA;
import locations.model.Profesional;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class SaveProfesionalAction extends ActionSupport implements
		ModelDriven<Profesional> {

	private static final long serialVersionUID = 1L;

	private Profesional profesional = new Profesional();
	private String especialidadId;
	private String servicioId;

	public String execute() {
		ServicioDAOHibernateJPA daoS = new ServicioDAOHibernateJPA();
		this.getProfesional().setServicio(
				daoS.retrieveById(Long.parseLong(this.getServicioId())));

		EspecialidadDAOHibernateJPA daoE = new EspecialidadDAOHibernateJPA();
		this.getProfesional().setEspecialidad(
				daoE.retrieveById(Long.parseLong(this.getEspecialidadId())));

		ProfesionalDAOHibernateJPA d = new ProfesionalDAOHibernateJPA();
		d.save(getProfesional());
		return SUCCESS;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	public Profesional getProfesional() {
		return profesional;
	}

	public void setProfesional(Profesional profesional) {
		this.profesional = profesional;
	}

	public String getEspecialidadId() {
		return especialidadId;
	}

	public void setEspecialidadId(String especialidadId) {
		this.especialidadId = especialidadId;
	}

	public String getServicioId() {
		return servicioId;
	}

	public void setServicioId(String servicioId) {
		this.servicioId = servicioId;
	}

	@Override
	public Profesional getModel() {
		return this.getProfesional();
	}

	@Override
	public void validate() {
		boolean ok = true;
		if (this.getProfesional().getNombre().equals("")) {
			addFieldError("nombre", "El nombre no puede estar en blanco");
			ok = false;
		}
		if (this.getProfesional().getApellido().equals("")) {
			addFieldError("apellido", "El apellido no puede estar en blanco");
			ok = false;
		}
		if (this.getProfesional().getDocumento().equals("")) {
			addFieldError("documento", "El documento no puede estar en blanco");
			ok = false;
		}
		if (this.getProfesional().getMatricula().equals("")) {
			addFieldError("matricula", "La matricula no puede estar en blanco");
			ok = false;
		}
		if (!ok) {
			addActionError("Algunos campos son invalidos");
			ok = false;
		}
	}

}
